From 244af63394ad7b6a349b0ec6fd2c5ad6e91b7233 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Thu, 24 May 2007 15:48:31 -0600 Subject: [PATCH] [IA64] memmap: save/restore implemented Implemented XENMEM_maximum_gpfn for domain save/restore with domain memmap. Signed-off-by: Isaku Yamahata --- linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c | 15 +++++++++++++++ xen/arch/ia64/xen/mm.c | 6 ++++++ xen/include/asm-ia64/mm.h | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c index 2e92b54917..daacf80e8e 100644 --- a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c +++ b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c @@ -430,6 +430,21 @@ xencomm_privcmd_memory_op(privcmd_hypercall_t *hypercall) return ret; } + case XENMEM_maximum_gpfn: + { + domid_t kern_domid; + domid_t __user *user_domid; + struct xencomm_handle *desc; + + user_domid = (domid_t __user *)hypercall->arg[1]; + if (copy_from_user(&kern_domid, user_domid, sizeof(domid_t))) + return -EFAULT; + desc = xencomm_create_inline(&kern_domid); + + ret = xencomm_arch_hypercall_memory_op(cmd, desc); + + return ret; + } case XENMEM_translate_gpfn_list: { xen_translate_gpfn_list_t kern_op; diff --git a/xen/arch/ia64/xen/mm.c b/xen/arch/ia64/xen/mm.c index 329614595b..45f15f9c46 100644 --- a/xen/arch/ia64/xen/mm.c +++ b/xen/arch/ia64/xen/mm.c @@ -370,6 +370,12 @@ mm_final_teardown(struct domain* d) mm_p2m_teardown(d); } +unsigned long +domain_get_maximum_gpfn(struct domain *d) +{ + return (d->arch.convmem_end + PAGE_SIZE - 1) >> PAGE_SHIFT; +} + // stolen from share_xen_page_with_guest() in xen/arch/x86/mm.c void share_xen_page_with_guest(struct page_info *page, diff --git a/xen/include/asm-ia64/mm.h b/xen/include/asm-ia64/mm.h index d3348d4806..e3636db2f4 100644 --- a/xen/include/asm-ia64/mm.h +++ b/xen/include/asm-ia64/mm.h @@ -506,6 +506,6 @@ int steal_page( #define domain_clamp_alloc_bitsize(d, b) (b) -#define domain_get_maximum_gpfn(d) (-ENOSYS) +unsigned long domain_get_maximum_gpfn(struct domain *d); #endif /* __ASM_IA64_MM_H__ */ -- 2.30.2